\relax 
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax 
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand*\HyPL@Entry[1]{}
\bibstyle{gbt7714-unsrt}
\bibstyle{gbt7714-numerical}
\HyPL@Entry{0<</S/D>>}
\pgfsyspdfmark {pgfid1}{7309039}{49923809}
\HyPL@Entry{1<</S/r>>}
\HyPL@Entry{4<</S/D>>}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Flink流处理简介}{1}{chapter.1}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {1.1}主要内容}{1}{section.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.2}Flink是什么}{1}{section.1.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.3}Flink目前在国内企业的应用}{1}{section.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.4}为什么选择Flink}{1}{section.1.4}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.5}哪些行业需要处理流数据}{2}{section.1.5}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.6}传统数据处理架构}{3}{section.1.6}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.6.1}OLTP}{3}{subsection.1.6.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.6.2}OLAP}{3}{subsection.1.6.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.6.3}LAMBDA架构}{3}{subsection.1.6.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.7}大数据的发展}{4}{section.1.7}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.8}有状态的流处理}{4}{section.1.8}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.9}流处理的演变}{5}{section.1.9}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.10}Flink的主要特点}{5}{section.1.10}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.11}事件驱动（Event Driven）}{6}{section.1.11}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.12}基于流的世界观}{6}{section.1.12}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.13}分层API}{7}{section.1.13}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.14}Flink中最重要的三个核心概念}{7}{section.1.14}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.15}分布式系统重要概念}{7}{section.1.15}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.16}Flink vs Spark Streaming}{8}{section.1.16}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.17}Flink程序的典型结构}{8}{section.1.17}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Flink运行时架构}{9}{chapter.2}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {2.1}HDFS主从架构}{9}{section.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Spark主从架构}{9}{section.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Flink主从架构}{9}{section.2.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2.4}作业管理器}{9}{section.2.4}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces 作业管理器的三种线程\relax }}{10}{figure.caption.15}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2.5}任务管理器}{10}{section.2.5}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2.6}任务插槽}{11}{section.2.6}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2.7}并行度的设置}{11}{section.2.7}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2.8}并行度设置的最佳实践}{11}{section.2.8}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2.9}任务提交流程}{11}{section.2.9}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {2.2}{\ignorespaces Flink任务提交流程\relax }}{11}{figure.caption.16}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2.10}Flink中的DAG数据结构}{11}{section.2.10}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {3}DataStream API}{13}{chapter.3}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}自定义数据源}{13}{section.3.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}POJO CLASS}{13}{subsection.3.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}SourceFunction}{13}{subsection.3.1.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3.2}基本转换算子}{13}{section.3.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3.3}逻辑分区算子}{13}{section.3.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}reduce算子如何维护逻辑分区}{14}{subsection.3.3.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3.4}物理分区算子}{14}{section.3.4}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3.5}富函数}{15}{section.3.5}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3.6}自定义输出}{15}{section.3.6}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {4}底层API}{16}{chapter.4}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {4.1}ProcessFunction}{16}{section.4.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.2}KeyedProcessFunction}{16}{section.4.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.3}逻辑分区维护的状态-键控状态变量}{17}{section.4.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}ValueState-值状态变量}{17}{subsection.4.3.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}ListState-列表状态变量}{18}{subsection.4.3.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.3}MapState-字典状态变量}{18}{subsection.4.3.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.4}ProcessWindowFunction}{18}{section.4.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.1}AggregateFunction}{19}{subsection.4.4.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.2}将AggregateFunction和ProcessWindowFunction结合使用}{19}{subsection.4.4.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.5}窗口的底层实现}{19}{section.4.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.1}增量聚合函数和全窗口聚合函数结合使用的底层实现}{19}{subsection.4.5.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.2}全窗口聚合函数的底层实现}{19}{subsection.4.5.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.6}ProcessAllWindowFunction}{20}{section.4.6}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {5}窗口}{21}{chapter.5}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}窗口的本质}{21}{section.5.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {5.2}窗口概念}{21}{section.5.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {5.3}窗口类型}{21}{section.5.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {5.4}滚动窗口}{21}{section.5.4}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {5.5}滑动窗口}{21}{section.5.5}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces 滚动窗口\relax }}{22}{figure.caption.26}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces 滑动窗口\relax }}{22}{figure.caption.27}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {5.6}会话窗口}{23}{section.5.6}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces 会话窗口\relax }}{23}{figure.caption.28}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {6}逻辑时钟-水位线}{24}{chapter.6}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {6.1}有关水位线的一些约定}{24}{section.6.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {6.2}水位线设置的最佳实践}{25}{section.6.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {6.3}Kafka水位线设置}{25}{section.6.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {6.4}如何处理迟到元素}{25}{section.6.4}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {6.5}如何处理迟到数据}{26}{section.6.5}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {7}多流合并}{27}{chapter.7}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {chapter}{\numberline {8}Flink中的状态管理}{28}{chapter.8}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {8.1}状态后端}{28}{section.8.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {8.2}选择一个状态后端}{28}{section.8.2}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {9}Flink的容错机制}{29}{chapter.9}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {chapter}{\numberline {10}端到端一致性}{30}{chapter.10}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {chapter}{\numberline {11}背压问题}{31}{chapter.11}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {chapter}{\numberline {12}有限状态机}{32}{chapter.12}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\gdef\minted@oldcachelist{,
  default-pyg-prefix.pygstyle,
  default.pygstyle,
  9F870E374DC9B7677B575D36DB6C64B3A7B6AFC8180D9FF927837A41AADC2AB8.pygtex,
  DB530E51420E8C47423A815585BB32489897FB28BC685494E9D4C8AB931ABA3E.pygtex,
  65AFB5ACE1A3FB107B15A8A9D446CE5D9897FB28BC685494E9D4C8AB931ABA3E.pygtex,
  5C5D6019D1E8E7AB19DACDF3F76CA1FC8D13B3523C4D2C97142FC80727B137CE.pygtex,
  9B299179274D28AC7601704996444F7A8D13B3523C4D2C97142FC80727B137CE.pygtex,
  91D802AC9F81493A9E43535626200361CBE0C2ABB6202A98A2AFD37340EDB088.pygtex}
\@writefile{toc}{\contentsline {chapter}{\numberline {13}竞争状态和锁机制}{33}{chapter.13}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
